﻿using Daphne.Modularity.Messaging;
using Microsoft.Practices.Unity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Daphne.Modularity.Storage;
using Daphne.Modularity.UI;

namespace Daphne.Modularity
{
    /// <summary>
    /// Daphne Module Interface
    /// </summary>
    public interface IModule
    {
        void Initialize();
    }

    /// <summary>
    /// Abstract Module Base Class
    /// </summary>
    public abstract class ModuleBase : IModule
    {
        [Dependency]
        protected IUnityContainer Unity
        { get; set; }

        [Dependency]
        protected IMessenger Messenger
        { get; set; }

        [Dependency]
        protected IStorageService StorageService
        { get; set; }

        [Dependency]
        protected IRegionManager RegionManager
        { get; set; }

        public abstract void Initialize();
    }
}
